/**
 * 权限控制（登录状态、用户信息）
 * 登录、退出、检测是否登录
 */

/**
 * storage key
 */
const TOKEN_KEY = 'TOKEN'

/**
 * 用户token
 */
var TOKEN = null

/**
 * 获取用户token
 * @return integer|null
 */
function getToken() {
  return TOKEN
}

/**
 * 设置用户id
 */
function setToken(token) {
  TOKEN = token
}

/**
 * 自动登录
 */
function autoLogin() {
  TOKEN = wx.getStorageSync(TOKEN_KEY)
}

/**
 * 设置登录态，保存用户token与用户信息
 */
function login(token, userInfo) {
  try {
    wx.setStorageSync(TOKEN_KEY, token)
    setToken(token)
    getApp().globalData.userInfo = userInfo
    return true
  } catch (e) {
    console.error('设置storage失败: ' + e)
    return false
  }
}

/**
 * 登出
 */
function logout() {
  try {
    wx.clearStorageSync()
    setToken(null)
    getApp().globalData.userInfo = null
    return true
  } catch (e) {
    console.error('清空storage失败: ' + e)
    return false
  }
}

/**
 * 检测是否登录，弹出登录对话框（可选）
 * 用于需要登录的操作
 * @param showModal {Boolean}
 * @return {Boolean}
 */
function isLogin(showModal = false) {
  if (TOKEN) {
    return true
  } else {
    if (showModal) {
      wx.showModal({
        title: '您还未登录',
        content: '登录后才可使用完整功能，是否前去登录？',
        success: (res) => {
          if (res.confirm) {
            wx.navigateTo({ url: '/pages/register/register?need_return=true' })
          }
        }
      })
    }
    return false
  }
}

module.exports = {
  getToken: getToken,
  autoLogin: autoLogin,
  login: login,
  logout: logout,
  isLogin: isLogin
}
